java8中Stream list to Map key重复value合并到Collectio的示例分析

您所在的位置:网站首页 collectorstomap key重复 java8中Stream list to Map key重复value合并到Collectio的示例分析

java8中Stream list to Map key重复value合并到Collectio的示例分析

2023-09-18 22:16| 来源: 网络整理| 查看: 265

java8中Stream list to Map key重复value合并到Collectio的示例分析 发布时间:2021-06-10 13:51:04 来源:亿速云 阅读:2548 作者:小新 栏目:开发技术

这篇文章给大家分享的是有关java8中Stream list to Map key重复value合并到Collectio的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

java8 Stream list to Map key 重复 value合并到Collectio

关于把list转换成key value的map有很多博客上都有实现,这里是一个把value放入到集合中去

List list = Lists.newArrayList("1", "2", "3", "1");         Map map = list.stream().collect(Collectors.toMap(key -> key,                 value -> Lists.newArrayList(value),                 (List newValueList, List oldValueList) -> {                     oldValueList.addAll(newValueList);                     return oldValueList;                 }));         System.out.println(JSON.toJSONString(map));

类似的,你的list泛型可以是一个bean,取bean的属性当key或者value,转换成一个集合

结果:

{"1":["1","1"],"2":["2"],"3":["3"]}

list中Map合并重复数据(map中key相等的value值相加)public static void main(String[] args) { List list = new ArrayList(); Map map1 = new HashMap(); map1.put("id", 1); map1.put("value", 2); list.add(map1); Map map2 = new HashMap(); map2.put("id", 1); map2.put("value", 5); list.add(map2); Map map3 = new HashMap(); map3.put("id", 2); map3.put("value", 5); list.add(map3); Map map4 = new HashMap(); map4.put("id", 2); map4.put("value", 4); list.add(map4); Map map5 = new HashMap(); map5.put("id", 1); map5.put("value", 4); list.add(map5); //id相等value相加(合并id相同数据) System.out.println("原始数据:"+list); //方法一 Map result1 = new HashMap(); for(Map map : list){ String id = map.get("id").toString(); Long value = Long.parseLong(map.get("value").toString()); if(result1.containsKey(id)){ Long temp = Long.parseLong(result1.get(id).toString()); value += temp; } result1.put(id, value); } System.out.println("合并后的数据:"+result1); //方法二 Map result2 = new HashMap(); for(Map map : list){ String id = map.get("id").toString(); Long value = Long.parseLong(map.get("value").toString()); if(result2.containsKey(id)){ Long temp = Long.parseLong(result2.get(id).get("value").toString()); value += temp; result2.get(id).put("value", value); continue; } result2.put(id, map); } System.out.println("合并后的数据2:"+result2);   }

感谢各位的阅读!关于“java8中Stream list to Map key重复value合并到Collectio的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

推荐阅读: JDK8stream将list转Map对象报错java.lang.IllegalStateExcep 基于Java8 Stream API如何实现数据抽取收集

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java8 key collectio 上一篇新闻:SSM框架整合之Spring+SpringMVC+MyBatis的示例分析 下一篇新闻:python中不同类型爬虫的爬行策略有哪些 猜你喜欢 程序猿的一天 ajax在success:function中实现刷新/跳转( 好程序员分享JavaScript之-文档对象模型(DOM) xpath选择器和css选择器 JS中正则基础 RS232/RS485转4-20ma、4路模拟信号 隔离D 使用 instanceof 判断数据类型 计算页面滚出的距离 如何进行Biztalk schema开发 条件判断语法


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3